package com.chery.media.library.extend

import android.graphics.Color
import android.util.Log
import android.view.Gravity
import android.view.View
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.SnackbarUtils
import com.blankj.utilcode.util.ToastUtils
import com.chery.media.library.BuildConfig
import com.chery.media.library.R

const val TAG = "CHERY_MEDIA"

/**
 *
 * 是否需要开启打印日志，默认打开，1.1.7-1.1.8版本是默认关闭的(1.0.0-1.1.6没有这个字段，框架在远程依赖下，直接不打印log)，但是默认关闭后很多人反馈都没有日志，好吧，我的我的
 * 根据true|false 控制网络请求日志和该框架产生的打印
 */
var showLog = BuildConfig.DEBUG

private enum class LEVEL {
    V, D, I, W, E
}

fun String.logv(tag: String = TAG) =
    log(LEVEL.V, tag, this)
fun String.logd(tag: String = TAG) =
    log(LEVEL.D, tag, this)
fun String.logi(tag: String = TAG) =
    log(LEVEL.I, tag, this)
fun String.logw(tag: String = TAG) =
    log(LEVEL.W, tag, this)
fun String.loge(tag: String = TAG) =
    log(LEVEL.E, tag, this)


private fun log(level: LEVEL, tag: String, message: String) {
    if (!showLog) return
    when (level) {
        LEVEL.V -> LogUtils.vTag(tag, message)
        LEVEL.D -> LogUtils.dTag(tag, message)
        LEVEL.I -> LogUtils.iTag(tag, message)
        LEVEL.W -> LogUtils.wTag(tag, message)
        LEVEL.E -> LogUtils.eTag(tag, message)
    }
}

fun <T : CharSequence> T?.toast(): T? {
    //适配 Android R 无法弹出问题
    //if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
    //Toast.makeText(Utils.getApp(), this, Toast.LENGTH_SHORT).show()
    //else
    //ToastUtils.showShort(this)
    this?.middleToast()
    return this
}


fun <T : CharSequence> T?.snack(v: View, apply: (SnackbarUtils) -> Unit = {}) {
    SnackbarUtils.with(v)
        .setMessage(this ?: "")
        .apply { apply(this) }
        .show()
}

fun <T : CharSequence> T?.middleToast() {
    ToastUtils.make()
        .setBgResource(R.drawable.toast_bg)
//        .setBgColor(Color.parseColor("#22232F"))
        .setGravity(Gravity.CENTER, 0, 0)
        .setTextColor(Color.WHITE)
        .setDurationIsLong(false)
        .show(this)

}